package com.zw.a.basic.a08.demo05_stringbuilder;

//案例: 演示StringBuilder中的方法.
/*
    涉及到的StringBuilder中的方法:
        public StringBuilder append(任意类型);          添加任意类型的数据, 返回StringBuilder本身.
        public StringBuilder reverse();                 反转StringBuilder对象, 返回StringBuilder本身.
 */
public class Demo02 {
    public static void main(String[] args) {
        //1.通过空参构造创建StringBuilder类的对象sb.
        StringBuilder sb = new StringBuilder();
        //2.通过append()方法, 往sb对象中添加"hello",然后用sb2对象接收.
        StringBuilder sb2 = sb.append("hello");
        //3.打印对象sb和sb2的结果, 并观察.
        System.out.println("sb: " + sb);        //sb:  hello
        System.out.println("sb2: " + sb2);      //sb2: hello
        System.out.println(sb == sb2);          //比较的是地址值, true

        //实际开发中, append()方法的调用写法.
        //如果是单个添加
        sb.append("world");
        //如果是添加多个, 用链式思想实现.
        //复杂写法
       /* sb.append("传智播客");
        sb.append("黑马程序员");
        sb.append("夯哥");*/

       //链式编程解释: 如果一个方法的返回值还是对象, 我们可以在后边接着 .方法(), 这种写法就叫链式编程.
        sb.append("传智播客").append("黑马程序员").append("夯哥");
        System.out.println("sb: " + sb);        //sb:  helloworld
        System.out.println("---------------------------");

        //4.通过reverse()方法, 来反转上述的内容.
        StringBuilder sb3 = sb2.reverse();
        System.out.println("sb: " + sb);
        System.out.println("sb2: " + sb2);
        System.out.println("sb3: " + sb3);
        System.out.println(sb2 == sb3);
    }
}
